// #include <iostream>
// #include <thread>
// #include <mutex>
// #include <condition_variable>
// #include <chrono>
// #include <vector>
// #include <cstdlib>

// using namespace std;

// struct ServiceInfo {
// 	int         status;
// 	std::string info;
// };

// std::vector<ServiceInfo> service_data; // 共享数据容器
// std::mutex               mtx;          // 保护共享数据的互斥锁
// std::condition_variable  data_ready_cv;
// bool                     stop_flag = false;


// void service_thread() {
// 	while (true) {
// 		// 模拟获取服务信息
// 		ServiceInfo info = {std::rand() % 100, "Service Data"};

// 		// 写入共享数据
// 		std::lock_guard<std::mutex> lock(mtx);
// 		// 释放信号量，通知主线程
// 		service_data.push_back(info);

// 		data_ready_sem.release();
// 		std::this_thread::sleep_for(std::chrono::seconds(1));
// 	}
// }

// // g++ -std=c++17 -pthread semaphore_demo.cpp -o semaphore_demo.exe
// void main_thread() {
// 	while (true) {
// 		// 等待信号量（阻塞直到有数据）
// 		data_ready_sem.acquire();

// 		// 处理数据
// 		std::lock_guard<std::mutex> lock(mtx);
// 		if (!service_data.empty()) {
// 			auto info = service_data.back();
// 			service_data.pop_back();
// 			std::cout << "Main handler => status: " << info.status << ", info: " << info.info << std::endl;
// 		}
// 	}
// }

// int main() {
// 	std::thread service_t(service_thread);
// 	std::thread main_t(main_thread);

// 	// 等待线程结束
// 	service_t.detach();
// 	main_t.join();
// 	return 0;
// }
